package com.xjj.test.demo.api;

import com.sword.commons.HttpClient.HttpResponse;
import com.sword.commons.HttpClient.RequestType;
import com.sword.woodpecker.autotest.framework.annotation.http.HttpRequest;
import com.sword.woodpecker.autotest.framework.annotation.http.Param;
import com.sword.woodpecker.autotest.framework.annotation.http.Url;
import java.util.Map;

/**
 * 接口描述:〈新建一个接口类，用于自动发送http请求。<br>注意：此接口不需要你实现，底层会自动代理去实现，你只需要定义好一个任意名字的接口即可。</br>〉
 */
public interface IHttpApi {

  //在接口中，自己任意写一个返回值为com.sword.commons.HttpClient.HttpResponse的方法，方法用@HttpRequest进行标记，并注明请求方式
  //方法参数：
  //1.url参数用@Url注解标记
  //2.请求参数用@Param注解标记
  //3.Header参数用@Header注解标记
  //4.文件下载时的文件保存路径参数用@Download注解标记
  //5.文件上传时的Name参数用@UploadName注解标记
  //6.文件上传时的被上传文件参数用@UploadFile注解标记
  //详细用法，请参考com.sword.woodpecker.autotest.framework.object.apiobject.Api接口，此接口预定义了许多常用的方法

  /**
   * 方法功能描述: 发送GET请求
   *
   * @param url 请求地址
   * @return com.sword.commons.HttpClient.HttpResponse
   */
  @HttpRequest(type = RequestType.GET)
  HttpResponse get(@Url String url);

  /**
   * 方法功能描述: 发送POST请求
   *
   * @param url    请求地址
   * @param params 请求参数
   * @return com.sword.commons.HttpClient.HttpResponse
   */
  @HttpRequest(type = RequestType.POST)
  HttpResponse post(@Url String url, @Param Map params);

  /**
   * 方法功能描述: 发送POST请求
   *
   * @param url    请求地址
   * @param params 请求参数
   * @return com.sword.commons.HttpClient.HttpResponse
   */
  @HttpRequest(type = RequestType.POST)
  HttpResponse post(@Url String url, @Param String params);

}
